package com.course02.order_backend.utils.llh;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;

@Component // 交给 Spring 管理
public class SysLogUtil {

    @Autowired
    private JdbcTemplate jdbcTemplate;
    // 注入 JdbcTemplate

    /**
     * 手动写入日志到数据库 sys_log 表
     * @param logType 日志类型（1=接口调用，2=异常）
     * @param businessId 关联业务ID（如订单ID）
     * @param module 模块名（如【订单业务】）
     * @param content 日志内容
     * @param operatorId 操作人ID（关联 tb_user.id）
     * @param operatorName 操作人姓名
     * @param operateIp 操作IP
     * @param logLevel 日志级别（INFO/WARN/ERROR）
     */
    public void saveLog(String logType, String businessId, String module,
                        String content, String operatorId, String operatorName,
                        String operateIp, String logLevel) {
        // 1. 定义插入SQL（对应 sys_log 表字段）
        String sql = "INSERT INTO sys_log(" +
                "log_type, business_id, module, content, operator_id, " +
                "operator_name, operate_time, operate_ip, log_level, create_time) " +
                "VALUES (?, ?, ?, ?, ?, ?, NOW(), ?, ?, NOW())";

        // 2. 执行SQL插入（用 JdbcTemplate 避免SQL注入）
        try {
            jdbcTemplate.update(sql,
                    logType, businessId, module, content, operatorId,
                    operatorName, operateIp, logLevel);
        } catch (Exception e) {
            // 日志插入失败时，打印到控制台（不影响主业务）
            System.err.println("日志写入数据库失败：" + e.getMessage());
        }
    }
}